package battleenum

// @schema_go --EnumToString=true
// @schema_ts --EnumToString=true
// @cache_ts
// @alias 事件类型
type S事件类型 int

// 场景事件
const (
	// AI
	// 该事件在玩家进行AI运算的的时候发生
	S事件类型_AI S事件类型 = iota + 1

	// 错误
	// 该事件在错误出现时发生
	S事件类型_错误

	// 效果-创建
	// 该事件在指定效果被指定玩家使用时发生
	// params = [*Effect]
	S事件类型_效果被创建

	S事件类型_帧进入

	S事件类型_帧离开

	// 该事件在世界初始化时发生。
	S事件类型_世界初始化

	S事件类型_玩家被创建

	S事件类型_玩家加入后

	S事件类型_玩家离开后

	S事件类型_玩家重连后

	// 该事件在某个单位使用某项技能时发生
	// params = [d.Abil, J技能阶段]
	S事件类型_单位技能

	// UnitBecomesIdle
	// 该事件在某个单位成为或停止闲置状态时发生
	// params=[是否闲置]
	S事件类型_单位闲置

	// UnitBehaviorChange
	// 该事件在某个单位的行为发生变化时发生
	// params = [IBeahvior, ds.BehaviorChange]
	S事件类型_单位行为变化

	// CreateUnit
	// 该事件在某单位被创建时发生。
	// params = [被创建的单位, 创建单位的技能，创建单位的行为]
	S事件类型_单位被创建

	// UnitDamage
	// 该事件在某单位受到伤害时发生
	S事件类型_单位受到伤害

	// UnitDestroy
	S事件类型_单位被销毁

	// UnitDamageResponse
	// 该事件在某单位受到伤害时发生。用于伤害响应
	S事件类型_UnitDamageResponse

	// UnitDied
	// 该事件在某单位死亡时发生，区别于单位被销毁。单位死亡时，变成尸体。
	S事件类型_单位死亡

	// UnitGainSharedXP
	// 该事件在单位获得共享经验的时候发生
	S事件类型_UnitGainSharedXP

	// UnitMoveStage
	// 该事件在某单位移动的阶段变化时发生
	// params [*Mover, ds.MoverStage]
	S事件类型_单位移动阶段

	// UnitWeaponStage
	// 该事件在某单位武器的阶段变化时发生
	// params = [*ds.Weapon, ds.WeaponStage]
	S事件类型_单位武器阶段

	// UnitProperty
	// 该事件在某单位的属性更改时发生
	// 使用“进行触发的玩家[S事件类型_.eventPlayer]”可以获取单位属性发生更改的单位的所属玩家
	// 使用“进行触发的单位[S事件类型_.eventUnit]”可以获取单位属性发生更改的单位
	// params = [SceneConfig.UnitProp, propIndex]
	S事件类型_单位属性变化

	// UnitOrder
	// 该事件在某单位被发出一项指令时发生
	// params = [Order]
	S事件类型_单位指令

	// UnitRemoved
	// 该事件在某单位被移出世界时发生。
	// 使用“触发玩家”可以获取该单位的所属玩家。
	// 使用“触发单位”可以获取该单位。
	S事件类型_单位移除

	// UnitSelected
	// 该事件在某单位被选中时发生
	S事件类型_单位被选中
)

// 属性变化的原因
// @schema_go --EnumToString=true
type PropChangedReason int

const (
	PropChangedReason_Normal PropChangedReason = iota
	PropChangedReason_ReRegen
	// 需要同步到演算体
	PropChangedReason_Actor
	PropChangedReason_Damage
	PropChangedReason_Cost
	PropChangedReason_Refund
	PropChangedReason_Heal
	PropChangedReason_ModifyUnit
)
